package com.baijiayun.live.ui.activity;

import com.baijiayun.live.ui.speakerlist.item.RemoteItem;
import com.baijiayun.live.ui.speakerlist.item.Switchable;
import com.baijiayun.livecore.context.LPConstants;
import com.baijiayun.livecore.context.LPError;
import com.baijiayun.livecore.context.LiveRoom;
import com.baijiayun.livecore.models.LPRedPacketModel;
import com.baijiayun.livecore.models.imodels.IUserModel;
import com.baijiayun.livecore.ppt.PPTView;
import com.baijiayun.liveuibase.widgets.toolbar.ShapeChangeData;

/**
 * Created by Shubo on 2017/2/15.
 */

public interface LiveRoomRouterListener {

    LiveRoom getLiveRoom();

    void notifyPageCurrent(int position);

    void navigateToPPTDrawing(boolean isAllowDrawing);

    /**
     * 通知 ppt 画笔变更
     * @param shapeChangeData 画笔变更数据
     */
    void navigateToPPTDrawing(ShapeChangeData shapeChangeData);

    void setPPTShowType(LPConstants.LPPPTShowWay type);

    /**
     * 多白板 : 添加白板
     */
    void addPPTWhiteboardPage();

    /**
     * 多白板 ：删除白板
     */
    void deletePPTWhiteboardPage(int pageId);

    /**
     * 翻页
     *
     * @param docId   文档docId
     * @param pageNum 当前docId的页码
     */
    void changePage(String docId, int pageNum);

    boolean isTeacherOrAssistant();

    boolean isGroupTeacherOrAssistant();

    void attachLocalVideo();

    void detachLocalVideo();

    void attachLocalAVideo();

    void sendImageMessage(String path);

    void showSavePicDialog(byte[] bmpArray);

    void realSaveBmpToFile(byte[] bmpArray);

    void showError(LPError error);

    boolean canStudentDraw();

    boolean isCurrentUserTeacher();

    int getSpeakApplyStatus();

    /**
     * 获得全屏的Item
     *
     * @return 全屏的item
     */
    Switchable getMaxScreenItem();

    /**
     * 右上角主讲区
     * @return
     */
    Switchable getMainScreenItem();

    /**
     * 切到全屏区域
     * @param switchable 全屏Item
     */
    void switchToMaxScreen(Switchable switchable);

    /**
     * 移除全屏Item到发言列表
     *
     * @param switchable
     */
    void switchToSpeakList(Switchable switchable);

    /**
     * 切到老师视频区（只有发言列表就不用切）
     * @param switchable
     */
    void switchToMainScreen(Switchable switchable);

    /**
     * 切到全屏
     * @param switchable
     * @param isFullScreen true:全屏 false 还原
     */
    void switchToFullScreen(Switchable switchable, boolean isFullScreen);

    PPTView getPPTView();

    void dismissQuizDlg();

    void attachLocalAudio();

    void showDebugBtn();

    void onPrivateChatUserChange(IUserModel iUserModel);

    IUserModel getPrivateChatUser();

    boolean isPrivateChat();

    boolean enableAnimPPTView(boolean b);

    void setRemarksEnable(boolean isEnable);

    void switchRedPacketUI(boolean isShow, LPRedPacketModel lpRedPacketModel);

    void onRepublishRedPacket();

    void closeTimer();

    void dismissEvaDialog();

    /**
     * 关闭自定义网页弹窗
     */
    void dismissCustomWebpage();

    void showToast(String message);

    void requestAward(IUserModel user);

    void requestAward(IUserModel user,String key);

    void handleUserCloseAction(RemoteItem remoteItem);

    void showBleDialog();
}
